#ifndef NMW_WALLET_CORE
#define NMW_WALLET_CORE

#include <string>
using namespace std;

namespace nmw_wallet{



enum class COINTYPE:uint32_t {
	BITCOIN = 0,
    ETHEREUM = 60,
};

class NmwWalletCore{
public:
    /*
        @return mnemonic, 12 words seperated by ' '
    */
    static string getMnemonic();
    
    /*
        @return address\nsecret_encoded
    */
    static string derivedPrivateByMnemonic(string mnemonic,string passphrase,string path);
    
    /*
        only for ethereum, not for bitcoin
        @return address\nsecret_encoded
    */
    static string derivedPrivateByKeystore(string keystore, string password);

    /*
        @return address\nsecret_encoded
    */
    static string derivedPrivateByKey(uint32_t cointype, string private_key);
    
    static string buildBtcRawTransaction(string net,string secretKey, string utxoJson);
    
    static string buildEthRawTransaction(string secretKey,string json);


};

}

#endif
